Synchronous এবং Asynchronous Request এর পার্থক্য

Java Technologies - স্প্রিং বুট ক্লায়েন্ট (Spring Boot Client) - Synchronous এবং Asynchronous Request Handling
130

Spring Boot ক্লায়েন্ট (RestTemplate, WebClient ইত্যাদি) ব্যবহার করে HTTP রিকোয়েস্ট প্রেরণ করার সময়, আমরা Synchronous বা Asynchronous পদ্ধতিতে কাজ করতে পারি। এই দুটি পদ্ধতির মধ্যে মূল পার্থক্য হলো রিকোয়েস্ট সম্পাদিত হওয়ার সময়কাল এবং প্রক্রিয়ার নিয়ন্ত্রণ।


১. Synchronous Request

  • ডেফিনিশন:
    Synchronous রিকোয়েস্ট হলো এমন একটি প্রক্রিয়া যেখানে রিকোয়েস্ট প্রেরণের পরে প্রোগ্রাম সম্পূর্ণ রেসপন্স না পাওয়া পর্যন্ত অপেক্ষা করে। এটি ব্লকিং অপারেশন
  • বৈশিষ্ট্য:
    • ক্লায়েন্ট থ্রেড রেসপন্স না পাওয়া পর্যন্ত অপেক্ষা করে।
    • সহজ এবং লজিক বোঝা সহজ।
    • ছোট স্কেলের অ্যাপ্লিকেশনের জন্য কার্যকর।
    • অপেক্ষার সময় থ্রেড অব্যবহৃত থাকে।
  • ব্যবহার:
    RestTemplate বা WebClient-এর .block() ব্যবহার করে Synchronous রিকোয়েস্ট করা যায়।

উদাহরণ (RestTemplate):

import org.springframework.web.client.RestTemplate;

public class SynchronousExample {
    public static void main(String[] args) {
        RestTemplate restTemplate = new RestTemplate();
        String url = "https://jsonplaceholder.typicode.com/posts/1";

        // Synchronous call
        String response = restTemplate.getForObject(url, String.class);

        System.out.println(response); // রেসপন্স পাওয়ার পর প্রিন্ট করবে
    }
}

উদাহরণ (WebClient):

import org.springframework.web.reactive.function.client.WebClient;

public class SynchronousExample {
    public static void main(String[] args) {
        WebClient webClient = WebClient.create("https://jsonplaceholder.typicode.com");

        // Synchronous call using block()
        String response = webClient.get()
                .uri("/posts/1")
                .retrieve()
                .bodyToMono(String.class)
                .block(); // Blocking call

        System.out.println(response); // রেসপন্স পাওয়ার পর প্রিন্ট করবে
    }
}

২. Asynchronous Request

  • ডেফিনিশন:
    Asynchronous রিকোয়েস্ট হলো এমন একটি প্রক্রিয়া যেখানে রিকোয়েস্ট প্রেরণের পর ক্লায়েন্ট থ্রেড রেসপন্স না পাওয়া পর্যন্ত অপেক্ষা করে না। এটি নন-ব্লকিং অপারেশন
  • বৈশিষ্ট্য:
    • ক্লায়েন্ট থ্রেড রিকোয়েস্ট প্রেরণের পর অবিলম্বে অন্য কাজ করতে পারে।
    • বড় স্কেলের এবং উচ্চ কার্যক্ষমতার অ্যাপ্লিকেশনের জন্য কার্যকর।
    • রেসপন্স প্রাপ্ত হলে ক্যালব্যাক মেথড বা রিঅ্যাকটিভ স্ট্রিম ব্যবহার করে ডেটা প্রক্রিয়াজাত করা হয়।
  • ব্যবহার:
    WebClient-এর .bodyToMono() বা .bodyToFlux() ব্যবহার করে Asynchronous রিকোয়েস্ট করা যায়।

উদাহরণ (WebClient):

import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;

public class AsynchronousExample {
    public static void main(String[] args) {
        WebClient webClient = WebClient.create("https://jsonplaceholder.typicode.com");

        // Asynchronous call
        Mono<String> response = webClient.get()
                .uri("/posts/1")
                .retrieve()
                .bodyToMono(String.class);

        // রেসপন্স পাওয়ার পর প্রিন্ট করবে
        response.subscribe(res -> System.out.println("Response: " + res));

        System.out.println("Request sent, waiting for response...");
    }
}

৩. Synchronous এবং Asynchronous এর পার্থক্য

বৈশিষ্ট্যSynchronous RequestAsynchronous Request
কাজের ধরনব্লকিং (Blocking)নন-ব্লকিং (Non-blocking)
থ্রেড ব্যবহারের ধরনএকটি থ্রেড কাজ শেষ না হওয়া পর্যন্ত অপেক্ষা করেথ্রেড অবিলম্বে মুক্ত হয়ে যায়
রেসপন্স টাইমঅপেক্ষাকৃত ধীর (থ্রেড ব্লক হওয়ার কারণে)অপেক্ষাকৃত দ্রুত (নন-ব্লকিং পদ্ধতি)
ব্যবহারযোগ্যতাছোট স্কেল অ্যাপ্লিকেশনবড় স্কেল, উচ্চ কার্যক্ষম অ্যাপ্লিকেশন
উদাহরণRestTemplate, WebClient-এর .block()WebClient, রিঅ্যাকটিভ স্ট্রিম
ডেটা প্রসেসিংরেসপন্স পাওয়ার পরপর ডেটা প্রক্রিয়াজাত হয়ক্যালব্যাক বা স্ট্রিম ভিত্তিক প্রক্রিয়া

৪. কখন কোনটি ব্যবহার করবেন?

  1. Synchronous Request ব্যবহার করবেন:
    • অ্যাপ্লিকেশন ছোট এবং সাধারণ হলে।
    • একটি নির্দিষ্ট কাজ সম্পন্ন না হওয়া পর্যন্ত থ্রেড অপেক্ষা করতে পারে।
    • ব্লকিং অপারেশন প্রয়োজন হলে।
  2. Asynchronous Request ব্যবহার করবেন:
    • অ্যাপ্লিকেশন বড় এবং স্কেলেবল হলে।
    • নেটওয়ার্ক ল্যাটেন্সি কমাতে চাইলে।
    • একাধিক রিকোয়েস্ট সমান্তরাল (parallel) প্রক্রিয়াকরণ করতে চাইলে।
    • রিঅ্যাকটিভ প্রোগ্রামিং এবং নন-ব্লকিং অপারেশন প্রয়োজন হলে।

উপসংহার

  • Synchronous Request হলো সহজ এবং স্ট্রেইট-ফরোয়ার্ড, তবে বড় অ্যাপ্লিকেশন বা উচ্চ কার্যক্ষমতা প্রয়োজন হলে এটি কার্যকর নয়।
  • Asynchronous Request বড় স্কেল অ্যাপ্লিকেশনের জন্য উপযুক্ত, বিশেষত যেখানে নন-ব্লকিং অপারেশন এবং রিঅ্যাকটিভ প্রোগ্রামিং প্রয়োজন হয়।

আপনার অ্যাপ্লিকেশনের চাহিদা অনুযায়ী সঠিক পদ্ধতি নির্বাচন করুন। প্রয়োজনে আরও উদাহরণ বা জটিল কনফিগারেশন নিয়ে সাহায্য করতে পারি।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...